#pragma once 

#include <iostream>
#include <string>
#include <sys/types.h>
#include <sys/socket.h>

class Util
{
  public:
    //按行读取，以\r \r\n \n为结束标志
    static int ReadLine(int sock,std::string& out)
    {
      char ch='x';
      while(ch!='\n')
      {
        ssize_t s=recv(sock,&ch,1,0);
        if(s>0)
        {
          if(ch=='\r')
          {
            recv(sock,&ch,1,MSG_PEEK);//窥探下一个字符，但不读走
            if(ch=='\n')
            {
              recv(sock,&ch,1,0);
            }
            else
            {
              ch='\n';
            }
          }

          //1.普通字符
          //2.\n
          out+=ch;
          
        }
        else if(s==0)
        {
          return 0;
        }
        else
        {
          return -1;
        }
      }
      
      return out.size();
    }

    static bool CutString(std::string& target,std::string& sub1_out,std::string& sub2_out,std::string sep)
    {
      size_t pos=target.find(sep) ;
      if(pos!=std::string::npos)
      {
        sub1_out=target.substr(0,pos);
        sub2_out=target.substr(pos+sep.size());
        return true;
      }

      return false;
    }
};
